package com.rattsoftware.server.dao;

import java.util.List;

import com.rattsoftware.server.admin.model.Room;
import com.rattsoftware.server.admin.model.paging.PagingLoadConfig;
import com.rattsoftware.server.admin.model.paging.PagingLoadResult;

/**
 * Provides data access 
 * services to the <code>Room service</code>.
 * 
 *
 */
public interface RoomDAO extends BaseDAO<Room> {
	
	/**
	 * Gets a list of rooms in the database.
	 * 
	 * @return the room list.
	 */
	List<Room> getRooms();
	
	/**
	 * Retrieves a Room by identifier
	 * 
	 * @param id Integer 
	 * @return Room, or null if no match found
	 */
	Room getRoomViaRoomId(Integer id);
	
	/**
	 * Retrieves a Room by identifier
	 * 
	 * @param roomNo Integer 
	 * @return Room, or null if no match found
	 */
	Room getRoomViaRoomNo(int roomNo);
	
	/**
	 * Saves a room to the database.
	 * 
	 * @param room the room to save.
	 */
	void saveRoom(Room room);
	
	/**
	 * Removes a department from the database.
	 * 
	 * @param department the department to remove.
	 * 
	 */
	void deleteRoom(Room room);
	
	/**
	 * Retrieves a page of the Room data.
	 * 
	 * @param pagingLoadConfig
	 *            config to specify paging related config
	 * @return PagingLoadResult containing a page of course data
	 */
	PagingLoadResult<Room> getRoomList(PagingLoadConfig pagingLoadConfig);
}